diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c
index 9887d09..ff0fa8a 100644
--- a/arch/sandbox/cpu/cpu.c
+++ b/arch/sandbox/cpu/cpu.c
@@ -73,7 +73,7 @@
  * which we can use to map back to the pointer later.
  *
  * @ptr: Pointer to check
- * @return true if this is within sandbox emulated DRAM, false if not
+ * Return: true if this is within sandbox emulated DRAM, false if not
  */
 static bool is_in_sandbox_mem(const void *ptr)
 {
diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
index 40ebe32..d83c862 100644
--- a/arch/sandbox/cpu/os.c
+++ b/arch/sandbox/cpu/os.c
@@ -718,7 +718,7 @@
  * @argvp:  Returns newly allocated args list
  * @add_args: Arguments to add, each a string
  * @count: Number of arguments in @add_args
- * @return 0 if OK, -ENOMEM if out of memory
+ * Return: 0 if OK, -ENOMEM if out of memory
  */
 static int add_args(char ***argvp, char *add_args[], int count)
 {
@@ -764,7 +764,7 @@
  * execs it.
  *
  * @fname: Filename to exec
- * @return does not return on success, any return value is an error
+ * Return: does not return on success, any return value is an error
  */
 static int os_jump_to_file(const char *fname, bool delete_it)
 {
diff --git a/arch/sandbox/cpu/state.c b/arch/sandbox/cpu/state.c
index 4e82253..ce904b1 100644
--- a/arch/sandbox/cpu/state.c
+++ b/arch/sandbox/cpu/state.c
@@ -101,7 +101,7 @@
  * @state: Sandbox state
  * @io: Method to use for reading state
  * @blob: FDT containing state
- * @return 0 if OK, -EINVAL if the read function returned failure
+ * Return: 0 if OK, -EINVAL if the read function returned failure
  */
 int sandbox_read_state_nodes(struct sandbox_state *state,
 			     struct sandbox_state_io *io, const void *blob)
@@ -190,7 +190,7 @@
  *
  * @state: Sandbox state
  * @io: Method to use for writing state
- * @return 0 if OK, -EIO if there is a fatal error (such as out of space
+ * Return: 0 if OK, -EIO if there is a fatal error (such as out of space
  * for adding the data), -EINVAL if the write function failed.
  */
 int sandbox_write_state_node(struct sandbox_state *state,
diff --git a/arch/sandbox/include/asm/eth.h b/arch/sandbox/include/asm/eth.h
index b313bf5..f042a5f 100644
--- a/arch/sandbox/include/asm/eth.h
+++ b/arch/sandbox/include/asm/eth.h
@@ -23,7 +23,7 @@
  * @dev: device that received the packet
  * @packet: pointer to the received pacaket buffer
  * @len: length of received packet
- * @return 0 if injected, -EAGAIN if not
+ * Return: 0 if injected, -EAGAIN if not
  */
 int sandbox_eth_arp_req_to_reply(struct udevice *dev, void *packet,
 				 unsigned int len);
@@ -36,7 +36,7 @@
  * @dev: device that received the packet
  * @packet: pointer to the received pacaket buffer
  * @len: length of received packet
- * @return 0 if injected, -EAGAIN if not
+ * Return: 0 if injected, -EAGAIN if not
  */
 int sandbox_eth_ping_req_to_reply(struct udevice *dev, void *packet,
 				  unsigned int len);
@@ -47,7 +47,7 @@
  * Inject an ARP request for this target
  *
  * @dev: device that received the packet
- * @return 0 if injected, -EOVERFLOW if not
+ * Return: 0 if injected, -EOVERFLOW if not
  */
 int sandbox_eth_recv_arp_req(struct udevice *dev);
 
@@ -57,7 +57,7 @@
  * Inject a ping request for this target
  *
  * @dev: device that received the packet
- * @return 0 if injected, -EOVERFLOW if not
+ * Return: 0 if injected, -EOVERFLOW if not
  */
 int sandbox_eth_recv_ping_req(struct udevice *dev);
 
diff --git a/arch/sandbox/include/asm/gpio.h b/arch/sandbox/include/asm/gpio.h
index 9542fde..0dd4c7b 100644
--- a/arch/sandbox/include/asm/gpio.h
+++ b/arch/sandbox/include/asm/gpio.h
@@ -37,7 +37,7 @@
  *
  * @param dev		device to use
  * @param offset	GPIO offset within bank
- * @return -1 on error, 0 if GPIO is low, >0 if high
+ * Return: -1 on error, 0 if GPIO is low, >0 if high
  */
 int sandbox_gpio_get_value(struct udevice *dev, unsigned int offset);
 
@@ -47,7 +47,7 @@
  * @param dev		device to use
  * @param offset	GPIO offset within bank
  * @param value		value to set (0 for low, non-zero for high)
- * @return -1 on error, 0 if ok
+ * Return: -1 on error, 0 if ok
  */
 int sandbox_gpio_set_value(struct udevice *dev, unsigned int offset, int value);
 
@@ -56,7 +56,7 @@
  *
  * @param dev		device to use
  * @param offset	GPIO offset within bank
- * @return -1 on error, 0 if GPIO is input, >0 if output
+ * Return: -1 on error, 0 if GPIO is input, >0 if output
  */
 int sandbox_gpio_get_direction(struct udevice *dev, unsigned int offset);
 
@@ -66,7 +66,7 @@
  * @param dev		device to use
  * @param offset	GPIO offset within bank
  * @param output	0 to set as input, 1 to set as output
- * @return -1 on error, 0 if ok
+ * Return: -1 on error, 0 if ok
  */
 int sandbox_gpio_set_direction(struct udevice *dev, unsigned int offset,
 			       int output);
@@ -76,7 +76,7 @@
  *
  * @param dev		device to use
  * @param offset	GPIO offset within bank
- * @return dir_flags: bitfield accesses by GPIOD_ defines
+ * Return: dir_flags: bitfield accesses by GPIOD_ defines
  */
 ulong sandbox_gpio_get_flags(struct udevice *dev, unsigned int offset);
 
@@ -86,7 +86,7 @@
  * @param dev		device to use
  * @param offset	GPIO offset within bank
  * @param flags		bitfield accesses by GPIOD_ defines
- * @return -1 on error, 0 if ok
+ * Return: -1 on error, 0 if ok
  */
 int sandbox_gpio_set_flags(struct udevice *dev, unsigned int offset,
 			   ulong flags);
diff --git a/arch/sandbox/include/asm/sdl.h b/arch/sandbox/include/asm/sdl.h
index 25dbdb5..e271a84 100644
--- a/arch/sandbox/include/asm/sdl.h
+++ b/arch/sandbox/include/asm/sdl.h
@@ -19,7 +19,7 @@
  *		display will pass 5, since 2*5 = 32
  * @double_size: true to double the visible size in each direction for high-DPI
  *		displays
- * @return 0 if OK, -ENODEV if no device, -EIO if SDL failed to initialize
+ * Return: 0 if OK, -ENODEV if no device, -EIO if SDL failed to initialize
  *		and -EPERM if the video failed to come up.
  */
 int sandbox_sdl_init_display(int width, int height, int log2_bpp,
@@ -28,7 +28,7 @@
 /**
  * sandbox_sdl_remove_display() - Remove the SDL screen
  *
- * @return 0 if OK, -ENOENT if the SDL had not been inited.
+ * Return: 0 if OK, -ENOENT if the SDL had not been inited.
  */
 int sandbox_sdl_remove_display(void);
 
@@ -39,7 +39,7 @@
  * user can see it.
  *
  * @lcd_base: Base of frame buffer
- * @return 0 if screen was updated, -ENODEV is there is no screen.
+ * Return: 0 if screen was updated, -ENODEV is there is no screen.
  */
 int sandbox_sdl_sync(void *lcd_base);
 
@@ -50,7 +50,7 @@
  *
  * @key:	Array to receive keycodes
  * @max_keys:	Size of array
- * @return number of keycodes found, 0 if none, -ENODEV if no keyboard
+ * Return: number of keycodes found, 0 if none, -ENODEV if no keyboard
  */
 int sandbox_sdl_scan_keys(int key[], int max_keys);
 
@@ -58,7 +58,7 @@
  * sandbox_sdl_key_pressed() - check if a particular key is pressed
  *
  * @keycode:	Keycode to check (KEY_... - see include/linux/input.h
- * @return 0 if pressed, -ENOENT if not pressed. -ENODEV if keybord not
+ * Return: 0 if pressed, -ENOENT if not pressed. -ENODEV if keybord not
  * available,
  */
 int sandbox_sdl_key_pressed(int keycode);
@@ -74,7 +74,7 @@
 /**
  * sandbox_sdl_sound_stop() - stop playing a sound
  *
- * @return 0 if OK, -ENODEV if no sound is available
+ * Return: 0 if OK, -ENODEV if no sound is available
  */
 int sandbox_sdl_sound_stop(void);
 
@@ -83,7 +83,7 @@
  *
  * @rate:	Sample rate to use
  * @channels:	Number of channels to use (1=mono, 2=stereo)
- * @return 0 if OK, -ENODEV if no sound is available
+ * Return: 0 if OK, -ENODEV if no sound is available
  */
 int sandbox_sdl_sound_init(int rate, int channels);
 
diff --git a/arch/sandbox/include/asm/state.h b/arch/sandbox/include/asm/state.h
index 10352a5..07c768a 100644
--- a/arch/sandbox/include/asm/state.h
+++ b/arch/sandbox/include/asm/state.h
@@ -134,7 +134,7 @@
  *	data set for start-of-day.
  *	@param blob: Pointer to device tree blob, or NULL if no data to read
  *	@param node: Node offset to read from
- *	@return 0 if OK, -ve on error
+ *	Return: 0 if OK, -ve on error
  *
  * @write: Function to write state to FDT
  *	The caller will ensure that there is a node ready for the state. The
@@ -186,7 +186,7 @@
 /**
  * Gets a pointer to the current state.
  *
- * @return pointer to state
+ * Return: pointer to state
  */
 struct sandbox_state *state_get_current(void);
 
@@ -198,7 +198,7 @@
  *
  * @param state		Sandbox state to update
  * @param fname		Filename of device tree file to read from
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int sandbox_read_state(struct sandbox_state *state, const char *fname);
 
@@ -212,7 +212,7 @@
  *
  * @param state		Sandbox state to update
  * @param fname		Filename of device tree file to write to
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int sandbox_write_state(struct sandbox_state *state, const char *fname);
 
@@ -247,7 +247,7 @@
 /**
  * See if delays should be skipped
  *
- * @return true if delays should be skipped, false if they should be honoured
+ * Return: true if delays should be skipped, false if they should be honoured
  */
 bool state_get_skip_delays(void);
 
@@ -274,7 +274,7 @@
  * Uninitialize the test system state, writing out state if configured to
  * do so.
  *
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int state_uninit(void);
 
diff --git a/arch/sandbox/include/asm/test.h b/arch/sandbox/include/asm/test.h
index 0aad827..0d83f4d 100644
--- a/arch/sandbox/include/asm/test.h
+++ b/arch/sandbox/include/asm/test.h
@@ -101,7 +101,7 @@
  * @use_system_time:	true to use system time, false to use @base_time
  * @offset:		RTC offset from current system/base time (-1 for no
  *			change)
- * @return old value of RTC offset
+ * Return: old value of RTC offset
  */
 long sandbox_i2c_rtc_set_offset(struct udevice *dev, bool use_system_time,
 				int offset);
@@ -111,7 +111,7 @@
  *
  * @dev:		RTC device to adjust
  * @base_time:		New base system time (set to -1 for no change)
- * @return old base time
+ * Return: old base time
  */
 long sandbox_i2c_rtc_get_set_base_time(struct udevice *dev, long base_time);
 
@@ -135,7 +135,7 @@
  * @duty_ns: Current duty cycle of the PWM in nanoseconds
  * @enable: true if the PWM is enabled
  * @polarity: true if the PWM polarity is active high
- * @return 0 if OK, -ENOSPC if the PWM number is invalid
+ * Return: 0 if OK, -ENOSPC if the PWM number is invalid
  */
 int sandbox_pwm_get_config(struct udevice *dev, uint channel, uint *period_nsp,
 			   uint *duty_nsp, bool *enablep, bool *polarityp);
@@ -164,7 +164,7 @@
  * This data is provided to the sandbox driver by the I2S tx_data() method.
  *
  * @dev: Device to check
- * @return sum of audio data
+ * Return: sum of audio data
  */
 int sandbox_get_i2s_sum(struct udevice *dev);
 
@@ -174,14 +174,14 @@
  * This is used in the sound test
  *
  * @dev: Device to check
- * @return call count for the setup() method
+ * Return: call count for the setup() method
  */
 int sandbox_get_setup_called(struct udevice *dev);
 
 /**
  * sandbox_get_sound_active() - Returns whether sound play is in progress
  *
- * @return true if active, false if not
+ * Return: true if active, false if not
  */
 int sandbox_get_sound_active(struct udevice *dev);
 
@@ -191,7 +191,7 @@
  * This data is provided to the sandbox driver by the sound play() method.
  *
  * @dev: Device to check
- * @return sum of audio data
+ * Return: sum of audio data
  */
 int sandbox_get_sound_sum(struct udevice *dev);
 
@@ -207,7 +207,7 @@
  * sandbox_get_beep_frequency() - Get the frequency of the current beep
  *
  * @dev: Device to check
- * @return frequency of beep, if there is an active beep, else 0
+ * Return: frequency of beep, if there is an active beep, else 0
  */
 int sandbox_get_beep_frequency(struct udevice *dev);
 
@@ -215,7 +215,7 @@
  * sandbox_spi_get_speed() - Get current speed setting of a sandbox spi bus
  *
  * @dev: Device to check
- * @return current bus speed
+ * Return: current bus speed
  */
 uint sandbox_spi_get_speed(struct udevice *dev);
 
@@ -223,7 +223,7 @@
  * sandbox_spi_get_mode() - Get current mode setting of a sandbox spi bus
  *
  * @dev: Device to check
- * @return current mode
+ * Return: current mode
  */
 uint sandbox_spi_get_mode(struct udevice *dev);
 
@@ -231,7 +231,7 @@
  * sandbox_get_pch_spi_protect() - Get the PCI SPI protection status
  *
  * @dev: Device to check
- * @return 0 if not protected, 1 if protected
+ * Return: 0 if not protected, 1 if protected
  */
 int sandbox_get_pch_spi_protect(struct udevice *dev);
 
@@ -239,7 +239,7 @@
  * sandbox_get_pci_ep_irq_count() - Get the PCI EP IRQ count
  *
  * @dev: Device to check
- * @return irq count
+ * Return: irq count
  */
 int sandbox_get_pci_ep_irq_count(struct udevice *dev);
 
@@ -254,7 +254,7 @@
  * @type: Type of BAR (PCI_BASE_ADDRESS_SPACE_IO or
  *		PCI_BASE_ADDRESS_MEM_TYPE_32)
  * @size: Size of BAR in bytes
- * @return BAR value to return from emulator
+ * Return: BAR value to return from emulator
  */
 uint sandbox_pci_read_bar(u32 barval, int type, uint size);
 
@@ -283,7 +283,7 @@
  * @dev: Device to check
  * @index: PWM channel index
  * @duty: Current duty cycle in 0..EC_PWM_MAX_DUTY range.
- * @return 0 if OK, -ENOSPC if the PWM number is invalid
+ * Return: 0 if OK, -ENOSPC if the PWM number is invalid
  */
 int sandbox_cros_ec_get_pwm_duty(struct udevice *dev, uint index, uint *duty);
 
@@ -298,7 +298,7 @@
  *
  * @dev: Device to adjust
  * @l2bpp: depth to set
- * @return 0 if the device was already active, other error if it fails to probe
+ * Return: 0 if the device was already active, other error if it fails to probe
  * after the change
  */
 int sandbox_sdl_set_bpp(struct udevice *dev, enum video_log2_bpp l2bpp);
diff --git a/arch/sandbox/include/asm/u-boot-sandbox.h b/arch/sandbox/include/asm/u-boot-sandbox.h
index 56dc13c..9eb1932 100644
--- a/arch/sandbox/include/asm/u-boot-sandbox.h
+++ b/arch/sandbox/include/asm/u-boot-sandbox.h
@@ -44,7 +44,7 @@
  * @devp:	Returns the device which mapped into this space
  * @ptrp:	Returns a pointer to the mapped address. The device's space
  *		can be accessed as @lenp bytes starting here
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int pci_map_physmem(phys_addr_t paddr, unsigned long *lenp,
 		    struct udevice **devp, void **ptrp);
@@ -57,7 +57,7 @@
  * @paddr:	Physical memory address, as passed to pci_map_physmem()
  * @len:	Size of area mapped, as returned by pci_map_physmem()
  * @dev:	Device to unmap, as returned by pci_map_physmem()
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int pci_unmap_physmem(const void *addr, unsigned long len,
 		      struct udevice *dev);
